﻿using System;
using DDotNet.ORM.ORMapping.OREntity;

namespace DDotNet.ORM.DataFactory.Interface
{
    /// <summary>
    /// Interface to Internal CRUD Factory
    /// </summary>
    internal interface IInternalCRUDFactory
    {
        /// <summary>
        /// Insere uma nova Cópia do Objeto no Banco de Dados
        /// </summary>
        /// <param name="mappedEntity">Entidade a ser Salva no Banco de Dados</param>
        void InsertEntityIntoDB(BusinessEntityBase mappedEntity, CRUDHelper crudHelper);

        /// <summary>
        /// Atualiza um Objeto no Banco de Dados
        /// </summary>
        /// <param name="mappedEntity">Entidade a ser Atualizada no Banco de Dados</param>
        void UpdateEntityIntoDB(BusinessEntityBase mappedEntity, CRUDHelper crudHelper);

        /// <summary>
        /// Exclui um Objeto no Banco de Dados
        /// </summary>
        /// <param name="mappedEntity">Entidade a ser Excluída do Banco de Dados</param>
        void DeleteEntityIntoDB(BusinessEntityBase mappedEntity, CRUDHelper crudHelper);

        /// <summary>
        /// Limpa uma Tabela do Banco de Dados
        /// </summary>
        /// <param name="mappedEntityType">Tipo da Entidade Correspondente a Tabela a ser Limpa</param>
        void DeleteAll(Type mappedEntityType, CRUDHelper crudHelper);
    }
}